//  为了再函数执行完毕后，及时释放资源，设计 defer 延时机制
// 执行到 defer时u不会立即执行 defer后的语句
// defer后的语句 会在执行到defer时同时将 值 拷贝一份
// defer的主要价值是 当函数执行完毕后 可以及时的释放函数创建的资源  比如数据库连接等


//值传递 基本数据类型 int\float\string\bool\byte 结构体
//引用传递 切片 指针
package main 
import "fmt"
//函数体外 不能赋值  赋值语句不能在函数体外 
//Name := "sdf"  
var Name string = "sdf"

func main(){

	result := sum(11,22)
	fmt.Println("result=",result)


}


//defer 当函数执行完毕后 按照先入后厨的方式 执行  defer栈                              
func sum(n1 int ,n2 int) int{
	defer fmt.Println("1 n1 = ",n1)
	defer fmt.Println("2 n2 = ",n2)
	
	n1++
	n2++
	result := n1 + n2
	fmt.Println("3 result=",result)	
	return result
}